// 常用的数组的方法

//1. at()   接收一个数值,并返回该索引对应的元素. 负数倒数  即-1为数组最后一个元素
//	返回值:  值/undefined

const array = ['aaa', 'bbb', 'ccc', 'ddd']

console.log(
	array.at(0),//aaa
	array.at(1),//bbb
	array.at(2),//ccc
	array.at(3),//ddd
);
// console.log(
// 	array.at(-1),//ddd
// 	array.at(-2),//ccc
// 	array.at(-3),//bbb
// 	array.at(-4)//aaa
// );

// 2. concat() 合并两个或多个数组
//	返回值: 新数组
//	不改变原数组


let concatArr1 = ['aaa', 'bbb', 'ccc', 'ddd']
let concatArr2 = ['aa', 'bb', 'cc', 'dd']
let concatArr3 = ['a', 'b', 'c', 'd']

let use1 = concatArr1.concat(concatArr2)//连接两个数组
let use2 = concatArr1.concat(concatArr2, concatArr3)//连接三个数组

console.log('use1,use2', use1, use2);

let use3 = concatArr1.concat(1, [2, 3, [4]]) //连接值
console.log('use3', use3)//会将元素存到数组后面,数组元素会拆分一层

// 3. every () 判断一个数组中是否都能通过某个指定函数的要求. 
// 	返回值: 布尔值
let everyArr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

let use4 = everyArr1.every((item) => {
	return item > 6
})

let use5 = everyArr1.every(x => x > 6) //简写
console.log('use4', use4)//false
// 数组中的每一个元素都执行一下函数,直到找到一个不符合函数要求的,立即返回false
// every 遍历的元素范围在第一次调用 callback 之前就已确定了。在调用 every 之后添加到数组中的元素不会被 callback 访问到。
// 如果数组中存在的元素被更改,则他们传入callback 的值是 every 访问到他们那一刻的值。那些被删除的元素或从来未被赋值的元素将不会被访问到。


// 今日 fill filter find 


// fill 用一个值,来填充数组,从起始位置到终止位置的所有元素,不包括终止索引

// fill(填充值,起始索引,终止索引) 终止索引不填,默认到数组末尾元素

let fillArr = ['a', 'b', 'c', 'd']
fillArr.fill(2, 2)
console.log('fillArr', fillArr)//[ 'a', 'b', 2, 2 ]



// filter( ) 创建一个新数组,新数组的元素的给定数组中符合函数要求的元素

let filterArr = [1, 2, 5, 4, 7, 8, 9, 6, 3]
// 取出所有大于5
let useFilter = filterArr.filter(x => x > 5)
console.log('useFilter', useFilter)//useFilter [ 7, 8, 9, 6 ]
let useFilter2 = filterArr.filter(
	function (x) {
		return x < 5
	}
)
console.log('useFilter2', useFilter2)//useFilter2 [ 1, 2, 4, 3 ]

// 如果没有任何元素通过 函数要求,则返回一个新数组


// find  返回数组中第一个函数要求的值,否则返回undefine

let findArr = [1, 2, 5, 4, 7, 8, 9, 6, 3]

let useFind = findArr.find(x => x > 5)
console.log('useFind', useFind)//useFind 7

let useFind2 = findArr.find(
	function (x) {
		return x > 10
	}
)
console.log('useFind2', useFind2)//useFind2 undefined

let findIndexAndLast = ['小欧', '小号', '小李', '小欧']
// findIndex
let useFindeIndex = findIndexAndLast.findIndex(x => x === '小欧')
console.log('useFindeIndex', useFindeIndex)//useFindeIndex 0

// node js 不支持
// findLast
// console.log('findIndexAndLast', findIndexAndLast)
// let useFindeLast = findIndexAndLast.findLast(x => x === '小欧')
// console.log('useFindeLast', useFindeLast)
// findLastIndex
// let useFindeLastIndex = findIndexAndLast.findLastIndex()
// console.log('useFindeLastIndex', useFindeLastIndex)
